/**
 * 限定字符串长度
 * 如果超出指定长度，则自动截断，并在尾部添加...
 * @param {string}str
 * @param {number} max
 * @returns {string}
 */
function cut(str = '', max) {
    if (!str) {
        return '';
    }
    if (str.length < max) {
        return str;
    }

    return str.substr(0, max) + '...';
}

/**
 * 限定字符串长度 1个汉字计2个字节
 * 如果超出指定长度，则自动截断，并在尾部添加...
 * @param {string}str
 * @param {number} max
 * @returns {string}
 */
function cutCn(str = '', max) {
    if (!str) {
        return '';
    }
    const length = getCnLen(str);
    if (length < max) {
        return str;
    }

    let returnValue = '';
    let byteValLen = 0;
    for (let i = 0; i < str.length; i++) {
        if (str[i].match(/[^\x00-\xff]/ig) !== null) {
            byteValLen += 2;
        } else {
            byteValLen += 1;
        }
        if (byteValLen > max) {
            break;
        }
        returnValue += str[i];
    }
    return returnValue;
}

/**
 * 获取字符串长度 1个汉字计2个字节
 * @param {string} value
 * @returns {Number}
 */
function getCnLen(value) {
    if (!value) {
        return 0;
    }
    return value.replace(/[^\x00-\xff]/g, "ab").length;
}

export {
    cut,
    cutCn,
    getCnLen
}